/*
 * CloudBank Mobile Knowledge Sharing for Language Learners
 * Supported by the JISC Rapid Innovation Programme #jiscri
 *
 * Copyright (C) 2010 University of Brighton
 *
 * Licensed under the GNU General Public License v3 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/gpl.html
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
package uk.ac.brighton.itrg.cloudbank;

import android.util.Log;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;

public class Logger
{
	// the tag we use to filter LogCat
	private static final String TAG = "cb";

	// need this for remote error logging
	private static String mErrorMessage;

	public static void log(Exception e)
	{
		if(CB.DEBUG_LOCAL || CB.DEBUG_REMOTE) 
		{
			final Writer result = new StringWriter(); 
			e.printStackTrace(new PrintWriter(result)); 
			mErrorMessage = result.toString();
		}
		
		if(CB.DEBUG_LOCAL) log(mErrorMessage);
			
		if(CB.DEBUG_REMOTE)
		{
			new Thread(new Runnable()
			{
				public void run()
				{
		            HTTPPost post = new HTTPPost(HTTPPost.Request.LOG_INFO);
		            post.addString("client", "android");
		            post.addString("meta", "error");
		            post.addString("info", mErrorMessage);
		            String response = post.post();
					log("LogInfo.response", response);
				}
			}).start();
		}
	}

	
	public static void log(String s)
	{
		// annoyingly, the LogCat view in Eclipse truncates long strings. 
		// we therefore split long strings and issue multiple logs.
		if(CB.DEBUG_LOCAL) 
		{
			for(int i=0; i < s.length(); i+=80)
				Log.v(TAG, s.substring(i, Math.min(s.length(), i+80)));
		}
	}
	public static void log(String name, int value)
	{
		log(name + "==" + value);
	}
	public static void log(String name, long value)
	{
		log(name + "==" + value);
	}
	public static void log(String name, boolean value)
	{
		log(name + "==" + Boolean.toString(value));
	}
	public static void log(String name, Object value)
	{
		log(name + "==" + value);
	}
}

